//package com.ants.platform.core.plugins.memcached;
//
//import com.whalin.MemCached.MemCachedClient;
//import com.whalin.MemCached.SockIOPool;
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.InitializingBean;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//
//import java.util.Date;
//
///**
// * 手动注入MemCached 或者通过spring 配置建立memcached
// * Created by liushun on 2016/7/19.
// */
//public class MemCachedParams extends MemCachedClient implements InitializingBean, MemCacheClicent {
//
//    private static final Logger logger = LoggerFactory.getLogger(MemCachedParams.class);
//
//    @Value("${memcached.host:}")
//    private String host; //主机 可以配置多个
//
//    @Value("${memcached.weight:1}")
//    private String weight; //设置主机权重用","隔开
//
//    @Value("${memcached.initConn:5}")
//    private int initConn; //初始化连接数
//
//    @Value("${memcached.minConn:5}")
//    private int minConn; //最大连接数
//
//    @Value("${memcached.maxConn:1024}")
//    private int maxConn; //最大连接数
//
//    @Value("${memcached.maxIdle:100000}")
//    private int maxIdle; //最大处理时间
//
//    @Value("${memcached.maintSleep:30}")
//    private int maintSleep; //睡眠时间
//
//    @Value("${memcached.nagle:false}")
//    private boolean nagle;
//
//    @Value("${memcached.aliveCheck:true}")
//    private boolean aliveCheck;
//
//    @Value("${memcached.socketTO:30}")
//    private int socketTO;
//
//    @Value("${memcached.socketConnectTO:3000}")
//    private int socketConnectTO;
//
//    //初始化memcached服务器
//    private void InitMemCachedManager() {
//        SockIOPool pool = SockIOPool.getInstance();
//        //设置服务器信息
//        pool.setServers(new String[]{host});
//        pool.setWeights(str2Int(weight));
//
//        //设置初始连接数、最小最大连接数、最大处理时间
//        pool.setInitConn(initConn);
//        pool.setMinConn(minConn);
//        pool.setMaxConn(maxConn);
//        pool.setMaxIdle(maxIdle);
//
//        //设置主线程的睡眠时间
//        pool.setMaintSleep(30);
//
//        pool.setNagle(false);
//        pool.setAliveCheck(true);
//        pool.setSocketTO(30);
//        pool.setSocketConnectTO(3000);
//
//        //设置Tcp的参数，连接超时等
//        pool.initialize();
//        //校验是否连接成功
//    }
//
//    /**
//     * 将服务器权重字符串转换成整形数组
//     *
//     * @param str 权重字符串
//     * @return
//     */
//    private Integer[] str2Int(String str) {
//        try {
//            String[] s = str.split(",");
//            Integer[] result = new Integer[s.length];
//            for (int i = 0; i < s.length; i++)
//                result[i] = Integer.parseInt(s[i]);
//            return result;
//        } catch (Exception e) {
//            throw new RuntimeException("Memcached 端口号配置有误!");
//        }
//    }
//
//    public void afterPropertiesSet() throws Exception {
//        if (StringUtils.isEmpty(host))
//            throw new RuntimeException("注入了MemCached功能，配置文件中却没有配置主机: memcached.host");
//        else if (maxConn == 0)
//            throw new RuntimeException("注入了MemCached功能，配置文件中却没有配置最大连接数: memcached.maxconn");
//        else {
//            InitMemCachedManager();
//            boolean flag = this.set("validate memcached is conection!", new Date(1 * 60 * 1000));
//            if (!flag)
//                throw new RuntimeException("Memcached 配置有误或服务器未启动连接失败!");
//            else {
//                this.flushAll(); //重新启动时清空缓存
//                logger.info("\n=============================================================================================" +
//                        "\n=========================== 连接 " + host + " 初始化 Memcached 成功!" +
//                        "\n=============================================================================================");
//            }
//        }
//
//    }
//}
